package com.clkj.xiuzheng.pojo.common;

import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author yawang
 * @create 2023/12/05 10:37:47
 **/
public class WxTiXian {
    //商家转账到零钱

    public static String weixinTransferBat( String money,String openIds,String userName ) {

        /**
         * 个税代缴通知
         * 根据《中华人民共和国个人所得税法》第二条“个人取得工资、薪金所得、劳务报酬所得、稿酬所得、经营所得等”九项收入，应当缴纳个人所得税。所有佣金所得并需要提现的金额，平台将为用户代缴5%的税费。
         */
        money = String.valueOf(Double.valueOf(String.format("%2f",Double.valueOf(money)*0.95)));

        //商户号
        String mchid = WxApi.mchId;
        //申请商户号的appid或商户号绑定的appid（企业号corpid即为此appid）
        String appId = WxApi.wxAppId;
        //用户在直连商户应用下的用户标示
        String openId =openIds;
        //商户证书编号
        String wechatPayserialNo = WxApi.wechatPayserialNo;


//        String mchid = "1612147445";
//        //申请商户号的appid或商户号绑定的appid（企业号corpid即为此appid）
//        String appId = "wx0ea2189b4db8ca27";
//        //用户在直连商户应用下的用户标示
//        String openId =openIds;
//        //商户证书编号
//        String wechatPayserialNo = "727AC5D4B5B7B364E544CBE7FD643A8160CF56EA";

        //商户证书路径（在你本机测试时放你本机路径中的就可以）
        String urlP = "D:/app_cert/" + mchid + "/apiclient_key.pem";
        String privatekeypath = urlP;


        Map<String, Object> postMap = new HashMap<String, Object>();

        //商家批次单号 长度 1~32
        String outNo = VechatPayV3Util.getRandomString(32);

        postMap.put("appid", appId);
        postMap.put("out_batch_no", outNo);
        //该笔批量转账的名称
        postMap.put("batch_name", "用户余额提现");
        //转账说明，UTF8编码，最多允许32个字符
        postMap.put("batch_remark", userName);
        //转账金额单位为“分”。 总金额
        postMap.put("total_amount", Integer.parseInt(Util.getMoney(money)));
        //。转账总笔数
        postMap.put("total_num", 1);


        List<Map> list = new ArrayList<>();
        Map<String, Object> subMap = new HashMap<>(4);
        //商家明细单号
        subMap.put("out_detail_no", outNo);
        //转账金额
        subMap.put("transfer_amount", Integer.parseInt(Util.getMoney(money)));
        //转账备注
        subMap.put("transfer_remark", userName);
        //用户在直连商户应用下的用户标示
        subMap.put("openid", openId);
//		subMap.put("user_name", userName);
        list.add(subMap);
        postMap.put("transfer_detail_list", list);

        //发起转账操作
        String resStr = WxHttpUtil.postTransBatRequest(
                "https://api.mch.weixin.qq.com/v3/transfer/batches",
                JSONObject.toJSONString(postMap),
                wechatPayserialNo,
                mchid,
                privatekeypath);
        return resStr;
    }
}
